package timer

import "errors"

// 作为任务执行函数的注册表，实现 invoke_target 到具体函数的映射。
// 任务注册表：invokeTarget -> 执行函数映射
/*
说明：
	taskRegistry：维护任务名称和实际处理函数的映射关系。
	RegisterTask()：在初始化阶段注册任务函数到注册表。
	GetTask()：根据任务名称获取对应的处理函数。
*/

// 函数注册表：invokeTarget => 实际执行函数
var taskRegistry = make(map[string]func(string) error)

// RegisterTask 注册任务函数
func RegisterTask(name string, handler func(string) error) {
	taskRegistry[name] = handler
}

// GetTask 获取已注册的任务函数
func GetTask(name string) (func(string) error, error) {
	if handler, ok := taskRegistry[name]; ok {
		return handler, nil
	}
	return nil, errors.New("任务未注册：" + name)
}
